package receiver;

import static org.junit.Assert.*;

import org.junit.Test;

public class TestMEImpl {

	


	@Test
	public void testCouper() {
		MEImpl me = new MEImpl(new Buffer(), new PressePapier(), new Selection());
		me.saisirTexte("premiere chaine");
		me.couper();
		assertEquals(me.getContenuBuffer(),"premiere chaine");
		assertEquals(me.getContenuPressePapier(),"");
		
		me.selectionner(0, 3);
		me.couper();
		assertEquals(me.getContenuBuffer(),"miere chaine");
		assertEquals(me.getContenuPressePapier(),"pre");
		
	}

	@Test
	public void testCopier() {
		MEImpl me = new MEImpl(new Buffer(), new PressePapier(), new Selection());

		me.saisirTexte("premiere chaine");
		me.copier();
		assertEquals(me.getContenuBuffer(),"premiere chaine");
		assertEquals(me.getContenuPressePapier(),"");
		
		me.selectionner(0, 3);
		me.copier();
		assertEquals(me.getContenuBuffer(),"premiere chaine");
		assertEquals(me.getContenuPressePapier(),"pre");
	}

	@Test
	public void testColler() throws CloneNotSupportedException {
		MEImpl me = new MEImpl(new Buffer(), new PressePapier(), new Selection());
		me.saisirTexte("premiere chaine");
		me.selectionner(9, 9);
		me.coller();
		assertEquals(me.getContenuBuffer(),"premiere chaine");
		assertEquals(me.getContenuPressePapier(),null);
		
		me.selectionner(9, 15);
		PressePapier pp = new PressePapier();
		pp.setContenu("nouvel remplançant");
		me.setPressePapier(pp);
		me.coller();
		assertEquals(me.getContenuBuffer(),"premiere nouvel remplançant");
		assertEquals(me.getContenuPressePapier(),"nouvel remplançant");
	}

	@Test
	public void testSelectionner() throws CloneNotSupportedException {
		MEImpl me = new MEImpl(new Buffer(), new PressePapier(), new Selection());
		me.selectionner(9, 15);
		assertTrue(me.getSelection().getDebut() == 9);
		assertTrue(me.getSelection().getFin() == 15);

	}

	@Test
	public void testSaisirTexte() {
		MEImpl me = new MEImpl(new Buffer(), new PressePapier(), new Selection());

		me.saisirTexte("premiere chaine");
		assertEquals(me.getContenuBuffer(),"premiere chaine");
		me.selectionner(me.getContenuBuffer().length(), me.getContenuBuffer().length());
		me.saisirTexte(" ");
		assertEquals(me.getContenuBuffer(),"premiere chaine ");
		me.selectionner(me.getContenuBuffer().length(), me.getContenuBuffer().length());
		me.saisirTexte("pour un ");
		me.selectionner(me.getContenuBuffer().length(), me.getContenuBuffer().length());
		me.saisirTexte("nouveau test");
		assertEquals(me.getContenuBuffer(),"premiere chaine pour un nouveau test");
		me.selectionner(9, 15);
		me.saisirTexte("remplacée");
		assertEquals(me.getContenuBuffer(),"premiere remplacée pour un nouveau test");

	}

}
